home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_pow_srailcharges_m.cog < prev    next >
Text File  |  1998-02-25  |  4KB  |  171 lines

  1. # Jedi Knight Missions Cog Script
  2. #
  3. # POW_SRAILCHARGES_M.COG
  4. #
  5. # POWERUP Script - Seeking Rail Charges
  6. #
  7. # [YB & CYW] + [RF]
  8. #
  9. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  10.  
  11.  
  12. symbols
  13.  
  14. thing       powerup                          local
  15. thing       player                           local
  16. thing       sender                           local
  17. flex        damage                           local
  18. int         bin=91                           local
  19. sound       pickupsnd=helthpu1.wav           local
  20. sound       respawnsnd=Activate01.wav        local
  21. flex        amount                           local
  22.  
  23. template    sparkTemplate=+sparks            local
  24. int         scratch                          local
  25.  
  26. sound       fireSound=RailChargeFire01.WAV   local
  27. template    projectile=+sraildet             local
  28. template    blast=+small_exp                 local
  29.  
  30. vector      thingPos                         local
  31. vector      randVec                          local
  32.  
  33. int         bin_contents=0                   local
  34.  
  35. message     timer
  36. message     created
  37. message     damaged
  38. message     touched
  39. message     taken
  40. message     respawn
  41.  
  42. end
  43.  
  44. # ========================================================================================
  45.  
  46. code
  47.  
  48. created:
  49.    SetThingUserData(GetSenderRef(), 30);     // set the initial user data (i.e. "health")
  50.    Return;
  51.  
  52. # ............................................................................................
  53.  
  54. touched:
  55.    player = GetSourceRef();
  56.    amount = GetInv(player, bin);
  57.  
  58.    if (amount < GetInvMax(player, bin))
  59.    {
  60.       TakeItem(GetSenderRef(), -1);
  61.       call taken;
  62.    }
  63.  
  64.    Return;
  65.  
  66. # ........................................................................................
  67.  
  68. damaged:
  69.    damage = GetParam (0);
  70.    sender = GetSenderRef();
  71.  
  72.       // If it's already dead, don't allow any more damage.
  73.    if ((GetThingUserData (sender) == 0.0) || (rand() < 0.5))
  74.       return;
  75.  
  76.    // see if this will cause the explosion
  77.    if (GetThingUserData (sender) <= damage)
  78.    {
  79.       SetThingUserData(sender, 0.0);
  80.  
  81.       CreateThingNR(sparkTemplate, sparkSpot);
  82.  
  83.       SetTimerEx(0.5, 2, sender, 0);
  84.    }
  85.    else
  86.    {
  87.       SetThingUserData(sender, GetThingUserData (sender) - damage);
  88.    }
  89.  
  90.    ReturnEx (0);
  91.    return;
  92.  
  93. # ........................................................................................
  94.  
  95. taken:
  96.    player = GetSourceRef();
  97.    powerup = GetSenderRef();
  98.  
  99.       // If the object has been destroyed, don't award it to the player.
  100. //   if (GetThingUserData (sender) == 0.0)
  101. //    return;
  102.  
  103.    // Print("Rail Charges");
  104.    jkPrintUNIString(player, bin);
  105.  
  106.    // Do effects.
  107.    PlaySoundLocal(pickupsnd, 1, 0, 0);
  108.    AddDynamicTint(player, 0.0, 0.0, 0.2);
  109.  
  110.    // store the old bin contents
  111.    bin_contents = GetInv(player, bin);
  112.  
  113.    // Increment powerup amount.
  114.    ChangeInv(player, bin, 3.0);
  115.  
  116.    // Check for Auto Reload
  117.    if(GetAutoReload() & 1)
  118.    {
  119.       if(!bin_contents)
  120.       {
  121.          if(!((GetAutoReload() & 2) && (GetWeaponBin(GetCurWeapon(player)) == jkGetMultiParam(1))))
  122.          {
  123.             // Try to autoselect and see if the best weapon is the seeking railgun
  124.             if(AutoSelectWeapon(player, 2) == GetWeaponBin(17)) SelectWeapon(player, GetWeaponBin(17));
  125.          }
  126.       }
  127.    }
  128.  
  129.    Return;
  130.  
  131. # ........................................................................................
  132.  
  133. respawn:
  134.    SetThingUserData(GetSenderRef(), 30);     // set the initial user data (i.e. "health")
  135.    PlaySoundThingLocal(respawnsnd, GetSenderRef(), 0.6, 5.0, 10.0, 0);
  136.  
  137.    Return;
  138.  
  139. # ........................................................................................
  140.  
  141. timer:
  142.    sender = GetParam(0);
  143.  
  144.    if (GetSenderID() == 1)
  145.    {
  146.       thingPos = GetThingPos(sender);
  147.  
  148.       scratch = GetParam(1);
  149.  
  150.       while (scratch > 0)
  151.       {
  152.          randVec = VectorSet(rand() * 20, rand() * 360, 0);
  153.          CreateThingAtPosNR(projectile, GetThingSector(sender), thingPos, randVec);
  154.  
  155.          scratch = scratch - 1;
  156.       }
  157.  
  158.          // Since the user data is 0, the player won't actually be awarded this powerup.
  159.       TakeItem(sender, -1);
  160.    }
  161.    else
  162.    if (GetSenderID() == 2)
  163.    {
  164.       SetTimerEx(0.5, 1, sender, 2);
  165.  
  166.       CreateThingNR(blast, sender);
  167.    }
  168.    return;
  169. end
  170.  
  171.